#ifndef HMAP_H_
#define HMAP_H_

#include "hash_funcs.h"

#ifdef __GLIBCXX__
# include <ext/hash_map>
#endif

namespace physicsworks {

/**
 * Wraps to the nonstandard STL hash_map.
 * 
 * Usage example: HMap<const char*, int>::Type hm;
 */
template<class Key, class Tp, class HashFcn = hash<Key>, class EqualKey = std::equal_to<Key>, 
         class Alloc = std::allocator<Tp> >
struct HMap {

#ifdef __GLIBCXX__
	typedef __gnu_cxx::hash_map<Key, Tp, HashFcn, EqualKey, Alloc> Type;
#endif

private:
	HMap<Key, Tp, HashFcn, EqualKey, Alloc>() {}
};

}

#endif /*HMAP_H_*/
